/*
 * Sort.cpp
 *
 *  Created on: Sep 17, 2012
 *      Author: romina
 */

#include "Sort.h"

namespace ordenamiento {

Sort::Sort(string path_archivo_final){
	this->path_archivo_final = path_archivo_final;

}

void Sort::copiar_archivo(string origen, string destino){
	  fstream f(origen.c_str(), fstream::in|fstream::binary);
	  f << noskipws;
	  istream_iterator<unsigned char> begin(f);
	  istream_iterator<unsigned char> end;

	  fstream f2(destino.c_str(),fstream::out|fstream::binary);
	  ostream_iterator<char> begin2(f2);

	  copy(begin, end, begin2);
}

void Sort::sort(string path_input, string dir_particiones, string dir_merge){
	ReplacementSelection rp(path_input, dir_particiones);
	rp.replace_selection();
	Merge m(dir_merge, dir_particiones, rp.get_cant_particiones());
	m.merge();
	this->copiar_archivo(m.get_path_archivo_ordenado(), this->path_archivo_final);
}

Sort::~Sort(){

}


} /* namespace ordenamiento */
